/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Informacion.PuestoDeTrabajo.DAO;

import Informacion.PuestoDeTrabajo.BEAN.PuestoDeTrabajoBEAN;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import sape.Conexion;

/**
 *
 * @author Nilo
 */
public class PuestoDeTrabajoDAO {

    public PuestoDeTrabajoDAO() {
    }

    private static Object inicializarDB() {
        return null;
    }

    public static String agregarPuestoDeTrabajo(PuestoDeTrabajoBEAN puesto) {
        Conexion db = new Conexion();
        db.estableceConexion();
        try {
            Statement s = db.conexion.createStatement();
            String insert = "INSERT INTO \"public\".perfil (pernombre, perdescripcion, persueldobase, perestado) \n";
            insert += "VALUES ('" + puesto.getPuesto() + "', '" + puesto.getDescripcion() + "', " + puesto.getSueldo() + ", 'A')";
            s.execute(insert);
        } catch (SQLException e) {
            db.cierraConexion();
            return "SQLERROR";
        }
        db.cierraConexion();
        return "OK";
    }

    public static String modificarPuestoDeTrabajo(PuestoDeTrabajoBEAN puesto) {
        Conexion db = new Conexion();
        db.estableceConexion();
        try {
            Statement s = db.conexion.createStatement();

            String insert = "UPDATE \"public\".perfil SET";
            insert += " \"pernombre\" = '" + puesto.getPuesto() + "' ,";
            insert += " \"perdescripcion\" = '" + puesto.getDescripcion() + "' ,";
            insert += " \"persueldobase\" = " + puesto.getSueldo() + " ";
            insert += " WHERE peridperfil= " + puesto.getId() + ";";
            s.execute(insert);
        } catch (SQLException e) {
            db.cierraConexion();
            return "SQLERROR";
        }
        db.cierraConexion();
        return "OK";
    }

    public static String eliminarPuestoDeTrabajo(int id_puesto) {
        Conexion db = new Conexion();
        db.estableceConexion();
        try {
            Statement s = db.conexion.createStatement();
            String insert = "UPDATE \"public\".perfil SET \"perestado\" = 'Inactivo' WHERE peridperfil = " + id_puesto + ";";
            s.execute(insert);
        } catch (SQLException e) {
            db.cierraConexion();
            return "SQLERROR";
        }
        db.cierraConexion();
        return "OK";
    }

    public static ArrayList<PuestoDeTrabajoBEAN> getListaPuestosDeTrabajo() {
        ArrayList<PuestoDeTrabajoBEAN> lista = new ArrayList<PuestoDeTrabajoBEAN>();
        Conexion db = new Conexion();
        db.estableceConexion();
        try {
            Statement s = db.conexion.createStatement();
            String query = "select * from \"public\".perfil where perestado='A' ;";
            s.execute(query);
            ResultSet rs = s.getResultSet();
            while ((rs != null) && (rs.next())) {
                PuestoDeTrabajoBEAN puesto = new PuestoDeTrabajoBEAN(rs.getString(2), rs.getString(3), rs.getDouble(4));
                puesto.setId(rs.getInt(1));
                puesto.setEstado(rs.getString(5));
                lista.add(puesto);
            }
        } catch (Exception e) {
            db.cierraConexion();
            return null;
        }
        db.cierraConexion();
        return lista;
    }

    public static PuestoDeTrabajoBEAN getPuestoDeTrabajo(int idPuestoDeTrabajo) {
        ArrayList<PuestoDeTrabajoBEAN> lista = new ArrayList<PuestoDeTrabajoBEAN>();
        Conexion db = new Conexion();
        db.estableceConexion();
        try {
            Statement s = db.conexion.createStatement();

            String query = "select * from \"public\".perfil where perestado='A' AND peridperfil=" + idPuestoDeTrabajo + " ;";
            s.execute(query);
            ResultSet rs = s.getResultSet();

            if ((rs != null) && (rs.next())) {
                PuestoDeTrabajoBEAN puesto = new PuestoDeTrabajoBEAN(rs.getString(2), rs.getString(3), rs.getDouble(4));
                puesto.setId(rs.getInt(1));
                puesto.setEstado(rs.getString(5));
                db.cierraConexion();
                return puesto;
            }
            db.cierraConexion();
            return null;

        } catch (SQLException e) {
            db.cierraConexion();
            return null;
        }
    }

    public static boolean validarPuestoTrabajo(JTextField tbPuesto) {
        if (tbPuesto.getText().trim().length() == 0) {
            System.out.println("ERROR:Nombre del Puesto de Trabajo vacio");
            return false;
        }
        System.out.println("Se validó nombre del Puesto de Trabajo");
        return true;
    }

    public static boolean validarDescripcion(JTextArea tbaDescripcion) {
        if (tbaDescripcion.getText().trim().length() == 0) {
            System.out.println("ERROR:Descripción del Puesto de Trabajo vacio");
            return false;
        }
        System.out.println("Se validó la descripción del Puesto de Trabajo");
        return true;
    }

    public static boolean validarSueldo(JTextField tbSuedlo) {
        if (tbSuedlo.getText().trim().length() == 0) {
            System.out.println("ERROR: Sueldo del Puesto de Trabajo vacio");
            return false;
        }
        System.out.println("Se validó el sueldo del Puesto de Trabajo");
        return true;
    }
}
